↳ Prolog
↳ PrologToPiTRSProof
hbal_tree_in(s(s(X)), t(x, L, R)) → U1(X, L, R, distr_in(s(X), X, DL, DR))
distr_in(D1, D2, D2, D1) → distr_out(D1, D2, D2, D1)
distr_in(D1, D2, D1, D2) → distr_out(D1, D2, D1, D2)
distr_in(D1, X, D1, D1) → distr_out(D1, X, D1, D1)
U1(X, L, R, distr_out(s(X), X, DL, DR)) → U2(X, L, R, DL, DR, hbal_tree_in(DL, L))
hbal_tree_in(s(zero), t(x, nil, nil)) → hbal_tree_out(s(zero), t(x, nil, nil))
hbal_tree_in(zero, nil) → hbal_tree_out(zero, nil)
U2(X, L, R, DL, DR, hbal_tree_out(DL, L)) → U3(X, L, R, DL, DR, hbal_tree_in(DR, R))
U3(X, L, R, DL, DR, hbal_tree_out(DR, R)) → hbal_tree_out(s(s(X)), t(x, L, R))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
hbal_tree_in(s(s(X)), t(x, L, R)) → U1(X, L, R, distr_in(s(X), X, DL, DR))
distr_in(D1, D2, D2, D1) → distr_out(D1, D2, D2, D1)
distr_in(D1, D2, D1, D2) → distr_out(D1, D2, D1, D2)
distr_in(D1, X, D1, D1) → distr_out(D1, X, D1, D1)
U1(X, L, R, distr_out(s(X), X, DL, DR)) → U2(X, L, R, DL, DR, hbal_tree_in(DL, L))
hbal_tree_in(s(zero), t(x, nil, nil)) → hbal_tree_out(s(zero), t(x, nil, nil))
hbal_tree_in(zero, nil) → hbal_tree_out(zero, nil)
U2(X, L, R, DL, DR, hbal_tree_out(DL, L)) → U3(X, L, R, DL, DR, hbal_tree_in(DR, R))
U3(X, L, R, DL, DR, hbal_tree_out(DR, R)) → hbal_tree_out(s(s(X)), t(x, L, R))
HBAL_TREE_IN(s(s(X)), t(x, L, R)) → U11(X, L, R, distr_in(s(X), X, DL, DR))
HBAL_TREE_IN(s(s(X)), t(x, L, R)) → DISTR_IN(s(X), X, DL, DR)
U11(X, L, R, distr_out(s(X), X, DL, DR)) → U21(X, L, R, DL, DR, hbal_tree_in(DL, L))
U11(X, L, R, distr_out(s(X), X, DL, DR)) → HBAL_TREE_IN(DL, L)
U21(X, L, R, DL, DR, hbal_tree_out(DL, L)) → U31(X, L, R, DL, DR, hbal_tree_in(DR, R))
U21(X, L, R, DL, DR, hbal_tree_out(DL, L)) → HBAL_TREE_IN(DR, R)
hbal_tree_in(s(s(X)), t(x, L, R)) → U1(X, L, R, distr_in(s(X), X, DL, DR))
distr_in(D1, D2, D2, D1) → distr_out(D1, D2, D2, D1)
distr_in(D1, D2, D1, D2) → distr_out(D1, D2, D1, D2)
distr_in(D1, X, D1, D1) → distr_out(D1, X, D1, D1)
U1(X, L, R, distr_out(s(X), X, DL, DR)) → U2(X, L, R, DL, DR, hbal_tree_in(DL, L))
hbal_tree_in(s(zero), t(x, nil, nil)) → hbal_tree_out(s(zero), t(x, nil, nil))
hbal_tree_in(zero, nil) → hbal_tree_out(zero, nil)
U2(X, L, R, DL, DR, hbal_tree_out(DL, L)) → U3(X, L, R, DL, DR, hbal_tree_in(DR, R))
U3(X, L, R, DL, DR, hbal_tree_out(DR, R)) → hbal_tree_out(s(s(X)), t(x, L, R))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
HBAL_TREE_IN(s(s(X)), t(x, L, R)) → U11(X, L, R, distr_in(s(X), X, DL, DR))
HBAL_TREE_IN(s(s(X)), t(x, L, R)) → DISTR_IN(s(X), X, DL, DR)
U11(X, L, R, distr_out(s(X), X, DL, DR)) → U21(X, L, R, DL, DR, hbal_tree_in(DL, L))
U11(X, L, R, distr_out(s(X), X, DL, DR)) → HBAL_TREE_IN(DL, L)
U21(X, L, R, DL, DR, hbal_tree_out(DL, L)) → U31(X, L, R, DL, DR, hbal_tree_in(DR, R))
U21(X, L, R, DL, DR, hbal_tree_out(DL, L)) → HBAL_TREE_IN(DR, R)
hbal_tree_in(s(s(X)), t(x, L, R)) → U1(X, L, R, distr_in(s(X), X, DL, DR))
distr_in(D1, D2, D2, D1) → distr_out(D1, D2, D2, D1)
distr_in(D1, D2, D1, D2) → distr_out(D1, D2, D1, D2)
distr_in(D1, X, D1, D1) → distr_out(D1, X, D1, D1)
U1(X, L, R, distr_out(s(X), X, DL, DR)) → U2(X, L, R, DL, DR, hbal_tree_in(DL, L))
hbal_tree_in(s(zero), t(x, nil, nil)) → hbal_tree_out(s(zero), t(x, nil, nil))
hbal_tree_in(zero, nil) → hbal_tree_out(zero, nil)
U2(X, L, R, DL, DR, hbal_tree_out(DL, L)) → U3(X, L, R, DL, DR, hbal_tree_in(DR, R))
U3(X, L, R, DL, DR, hbal_tree_out(DR, R)) → hbal_tree_out(s(s(X)), t(x, L, R))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ PiDPToQDPProof
U11(X, L, R, distr_out(s(X), X, DL, DR)) → HBAL_TREE_IN(DL, L)
U21(X, L, R, DL, DR, hbal_tree_out(DL, L)) → HBAL_TREE_IN(DR, R)
HBAL_TREE_IN(s(s(X)), t(x, L, R)) → U11(X, L, R, distr_in(s(X), X, DL, DR))
U11(X, L, R, distr_out(s(X), X, DL, DR)) → U21(X, L, R, DL, DR, hbal_tree_in(DL, L))
hbal_tree_in(s(s(X)), t(x, L, R)) → U1(X, L, R, distr_in(s(X), X, DL, DR))
distr_in(D1, D2, D2, D1) → distr_out(D1, D2, D2, D1)
distr_in(D1, D2, D1, D2) → distr_out(D1, D2, D1, D2)
distr_in(D1, X, D1, D1) → distr_out(D1, X, D1, D1)
U1(X, L, R, distr_out(s(X), X, DL, DR)) → U2(X, L, R, DL, DR, hbal_tree_in(DL, L))
hbal_tree_in(s(zero), t(x, nil, nil)) → hbal_tree_out(s(zero), t(x, nil, nil))
hbal_tree_in(zero, nil) → hbal_tree_out(zero, nil)
U2(X, L, R, DL, DR, hbal_tree_out(DL, L)) → U3(X, L, R, DL, DR, hbal_tree_in(DR, R))
U3(X, L, R, DL, DR, hbal_tree_out(DR, R)) → hbal_tree_out(s(s(X)), t(x, L, R))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
U11(distr_out(DL, DR)) → HBAL_TREE_IN(DL)
HBAL_TREE_IN(s(s(X))) → U11(distr_in(s(X), X))
U21(DR, hbal_tree_out(L)) → HBAL_TREE_IN(DR)
U11(distr_out(DL, DR)) → U21(DR, hbal_tree_in(DL))
hbal_tree_in(s(s(X))) → U1(distr_in(s(X), X))
distr_in(D1, D2) → distr_out(D2, D1)
distr_in(D1, D2) → distr_out(D1, D2)
distr_in(D1, X) → distr_out(D1, D1)
U1(distr_out(DL, DR)) → U2(DR, hbal_tree_in(DL))
hbal_tree_in(s(zero)) → hbal_tree_out(t(x, nil, nil))
hbal_tree_in(zero) → hbal_tree_out(nil)
U2(DR, hbal_tree_out(L)) → U3(L, hbal_tree_in(DR))
U3(L, hbal_tree_out(R)) → hbal_tree_out(t(x, L, R))
hbal_tree_in(x0)
distr_in(x0, x1)
U1(x0)
U2(x0, x1)
U3(x0, x1)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
U11(distr_out(DL, DR)) → HBAL_TREE_IN(DL)
HBAL_TREE_IN(s(s(X))) → U11(distr_in(s(X), X))
U11(distr_out(DL, DR)) → U21(DR, hbal_tree_in(DL))
Used ordering: Combined order from the following AFS and order.
U21(DR, hbal_tree_out(L)) → HBAL_TREE_IN(DR)
[s1, nil] > [U1^11, HBALTREEIN1, U2^11]
[s1, nil] > distrin2 > distrout2
[s1, nil] > t3
U1 > [hbaltreein, U32, U2]
hbaltreein: multiset
distrout2: multiset
t3: multiset
U32: multiset
nil: multiset
HBALTREEIN1: multiset
U2: []
U2^11: multiset
zero: multiset
U1^11: multiset
distrin2: multiset
s1: multiset
U1: multiset
x: multiset
distr_in(D1, X) → distr_out(D1, D1)
distr_in(D1, D2) → distr_out(D1, D2)
distr_in(D1, D2) → distr_out(D2, D1)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
U21(DR, hbal_tree_out(L)) → HBAL_TREE_IN(DR)
hbal_tree_in(s(s(X))) → U1(distr_in(s(X), X))
distr_in(D1, D2) → distr_out(D2, D1)
distr_in(D1, D2) → distr_out(D1, D2)
distr_in(D1, X) → distr_out(D1, D1)
U1(distr_out(DL, DR)) → U2(DR, hbal_tree_in(DL))
hbal_tree_in(s(zero)) → hbal_tree_out(t(x, nil, nil))
hbal_tree_in(zero) → hbal_tree_out(nil)
U2(DR, hbal_tree_out(L)) → U3(L, hbal_tree_in(DR))
U3(L, hbal_tree_out(R)) → hbal_tree_out(t(x, L, R))
hbal_tree_in(x0)
distr_in(x0, x1)
U1(x0)
U2(x0, x1)
U3(x0, x1)